package com.exchange.consumer;

import redis.clients.jedis.GeoRadiusResponse;
import redis.clients.jedis.GeoUnit;
import redis.clients.jedis.Jedis;

import java.util.List;

public class RedisGeoRadiusExample {

    public static void main(String[] args) {
        // 连接 Redis 服务器
        Jedis jedis = new Jedis("localhost", 6379);

        // 添加地理位置数据
        jedis.geoadd("locations", 116.405285, 39.904989, "Beijing");
        jedis.geoadd("locations", 121.473701, 31.230416, "Shanghai");
        jedis.geoadd("locations", 113.264385, 23.12911, "Guangzhou");
        jedis.geoadd("locations", 113.937447, 22.539968, "Shenzhen");

        // 指定中心点坐标和半径
        double longitude = 121.473701;
        double latitude = 31.230416;
        double radius = 500; // 半径，单位为米

        // 获取周边地点信息
        List<GeoRadiusResponse> nearbyLocations = jedis.georadius("locations", longitude, latitude, radius, GeoUnit.M);

        // 输出结果
        System.out.println("中心点附近的地点：");
        for (GeoRadiusResponse location : nearbyLocations) {
            System.out.println(location.getMemberByString() + " - 距离中心点：" + location.getDistance() + " 米");
        }

        // 关闭连接
        jedis.close();
    }
}

